package cn.iocoder.yudao.module.ad.plan.vo;

import cn.iocoder.yudao.framework.business.basic.pojo.vo.MemberScopeVO;
import cn.iocoder.yudao.framework.validation.InEnumValue;
import cn.iocoder.yudao.module.api.ad.plan.enums.AdPlanStatusEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Data;

import java.time.LocalTime;

@Tag(name = "广告投放计划 Response VO")
@Data
public class AdminAdPlanVO extends MemberScopeVO {

    @Schema(description = "广告主，如个人姓名、公司名称", example = "广告主A")
    private String advertiser;

    @Schema(description = "封面地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://example.com/image.jpg")
    private String imageUrl;

    @Schema(description = "视频地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://example.com/video.mp4")
    private String videoUrl;

    @Schema(description = "落地页地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://example.com/landing.html")
    private String landingUrl;

    @Schema(description = "预算金额，单位为分", example = "10000")
    private Integer budgetPrice;

    @Schema(description = "花费金额，单位为分", example = "5000")
    private Integer spendPrice;

    @Schema(description = "计费类型", example = "0")
    private Integer billingType;

    @Schema(description = "计费单价，单位为", example = "1")
    private Integer billingUnitPrice;

    @Schema(description = "受众兴趣标签", example = "标签1,标签2")
    private String targetingInterestTags;

    @Schema(description = "受众性别（0:不限，1:男性，2:女性）", example = "1")
    private Integer targetingGender;

    @Schema(description = "受众年龄最小值", example = "18")
    private Integer targetingAgeMin;

    @Schema(description = "受众年龄最大值", example = "30")
    private Integer targetingAgeMax;

    @Schema(description = "受众区县", example = "区县A")
    private String targetingCountyCode;

    @Schema(description = "投放类型（0:固定时长，1:固定时段）", example = "0")
    private Integer exceptType;

    @Schema(description = "投放开始时间", example = "09:00:00")
    private LocalTime exceptStartTime;

    @Schema(description = "投放结束时间", example = "17:00:00")
    private LocalTime exceptEndTime;

    @Schema(description = "投放时长，单位为秒", example = "28800")
    private Integer exceptDuration;

    @Schema(description = "预期曝光次数", example = "1000")
    private Integer exceptExposureCount;

    @Schema(description = "实际曝光次数", example = "500")
    private Integer actualExposureCount;

    @Schema(description = "预期播放次数", example = "1000")
    private Integer exceptPlayCount;

    @Schema(description = "实际播放次数", example = "500")
    private Integer actualPlayCount;

    @Schema(description = "状态（0:待付款，10:待审核，20:进行中，30:已结束）", example = "1")
    @InEnumValue(AdPlanStatusEnum.class)
    private Integer status;

    @Schema(description = "排序", example = "1")
    private Integer sort;

}
